#include "ItemAgenda.h"

    /**********************************************************************
        Classe: ItemAgenda
        Funcionalidade: Guarda um evento da Agenda associado a um paciente
    ***********************************************************************/

/* Observacao:
 * 1 - deixei as datas como um int apenas, para facilitar os testes
 * 2 - criei uma 'descricao' para cada evento da agenda,
 * para ter uma diferenciacao de cada evento (tipo vacina de gripe, etc.)
 * nao sei se faz sentido pra galera, mas qualquer coisa e' so' tirar
 */

/*Tambem acho que nao fica nada pratico usar dia, hora e tal pra diferenciar as consultas,
 *fica dificil e eh estranho a pessoa precisar acertar a hora pra mudar algo, entao
 *to colocando so pela descricao*/

//Metodos get e set
ItemAgenda::ItemAgenda(string d, Paciente * pac, Vacina * vac) {
	paciente = pac;
	setDescricao(d);
	setDataAgendamento();
	setDataAtendimento();
	vacina = vac;
}

Paciente * ItemAgenda::getPaciente() {
	return paciente;
}

bool ItemAgenda::setPaciente(string nome, list<Cliente> clientes) {
	Paciente * temp;
	temp = Pesquisa::buscarPaciente(nome, clientes);
	if (temp == NULL)
		return false;
	paciente = temp;
	return true;
}

string ItemAgenda::getDescricao(){
    return descricao;
}

ItemAgenda::ItemAgenda(string d, Paciente * pac, Date dAg, Date dAt,
		Vacina * vac) {
	paciente = pac;
	setDescricao(d);
	setDataAgendamento(dAg);
	setDataAtendimento(dAt);
	vacina = vac;
}

ItemAgenda::ItemAgenda(string d, Paciente * pac, int dt, int mt, int at, int ht,
		int mit, Vacina * vac) {
	paciente = pac;
	setDescricao(d);
	setDataAgendamento();
	setDataAtendimento(dt, mt, at, ht, mit);
	vacina = vac;
}


void ItemAgenda::setDescricao(string d) {
	descricao = d;
}

Date ItemAgenda::getDataAgendamento() {
	return dataAgendamento;
}

Vacina * ItemAgenda::getVacina() {
	return vacina;
}

void ItemAgenda::setVacina(Vacina * v) {
	vacina = v;
}

void ItemAgenda::setDataAgendamento(int d, int m, int a, int h, int mi) {
	//TODO
	//Try/catch
	//Fazer date de forma que dia/mes/ano/hora/minuto tenha como padrão a hora atual se for -1
	dataAgendamento.setDia(d);
	dataAgendamento.setMes(m);
	dataAgendamento.setAno(a);
	dataAgendamento.setHora(h);
	dataAgendamento.setMinuto(mi);
}

void ItemAgenda::setDataAgendamento(Date dAg) {
	dataAgendamento = dAg;
}

Date ItemAgenda::getDataAtendimento() {
	return dataAtendimento;
}

void ItemAgenda::setDataAtendimento(int d, int m, int a, int h, int mi) {
	//TODO
	//Try/Catch
	dataAgendamento.setDia(d);
	dataAgendamento.setMes(m);
	dataAgendamento.setAno(a);
	dataAgendamento.setHora(h);
	dataAgendamento.setMinuto(mi);
}

void ItemAgenda::setDataAtendimento(Date dAt) {
	dataAtendimento = dAt;
}


